package com.vanysoft.business.system.loginSettings.service;

import com.vanysoft.business.sys.entity.UserInfo;
import com.vanysoft.business.system.loginSettings.controller.demo.LoginSetDemo;
import com.vanysoft.business.system.loginSettings.dao.TSystemLoginSetMapper;
import com.vanysoft.business.system.loginSettings.entity.TSystemLoginSet;
import com.vanysoft.common.utils.desc.DescUtil;
import com.vanysoft.framework.constants.DbConstants;
import com.vanysoft.framework.exception.VanySoftBaseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * 类名称：LoginSettingService
 * 类描述：
 * 创建人：X
 * 创建时间：2017年9月3日上午12:31:23
 * 修改人：X
 * 修改时间：2017年9月3日
 * 版本信息：@version 1.0
 * Copyright (c) 2017SharpClaw-版权所有
 * 修改备注：
 */
@Service
@Transactional(readOnly = true)
public class LoginSettingService {
    @Autowired
    private TSystemLoginSetMapper tSystemLoginSetMapper;

    /**
     * Function Name               loginValidate
     *
     * @return
     * @throws VanySoftBaseException
     * @description 新增记录
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年9月3日上午12:51:18          X          Initial
     * *********************************************************************
     */
    @Transactional
    public void addLoginSet(LoginSetDemo loginSet, UserInfo baseUserInfo) throws VanySoftBaseException {
        TSystemLoginSet obj = new TSystemLoginSet();
        String setId = UUID.randomUUID().toString().replaceAll("-", "");
        String sendPassword = DescUtil.encrypt(loginSet.getSendPassword());

        obj.setSetId(setId);
        obj.setErrorCount(loginSet.getErrorCount());
        obj.setLimitLoginTime(loginSet.getLimitLoginTime());
        obj.setSendServer(loginSet.getSendServer());
        obj.setPort(loginSet.getPort());
        obj.setSendUserName(loginSet.getSendUserName());
        obj.setSendPassword(sendPassword);
        obj.setTestEmail(loginSet.getTestEmail());
        obj.setFindPwdContent(loginSet.getFindPwdContent());
        obj.setCreateTime(new Date());
        obj.setUpdateTime(new Date());
        obj.setOwner(baseUserInfo.getId());
        obj.setIsAvailable(DbConstants.IS_AVAILABLE);
        tSystemLoginSetMapper.insert(obj);
    }

    /**
     * Function Name               updateLoginSet
     *
     * @return
     * @throws VanySoftBaseException
     * @description 修改登录设置信息
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年9月19日下午9:41:43          X          Initial
     * *********************************************************************
     */
    @Transactional
    public void updateLoginSet(LoginSetDemo loginSet, UserInfo baseUserInfo) throws VanySoftBaseException {
        TSystemLoginSet obj = new TSystemLoginSet();
        String sendPassword = DescUtil.encrypt(loginSet.getSendPassword());
        obj.setErrorCount(loginSet.getErrorCount());
        obj.setLimitLoginTime(loginSet.getLimitLoginTime());
        obj.setSendServer(loginSet.getSendServer());
        obj.setPort(loginSet.getPort());
        obj.setSendUserName(loginSet.getSendUserName());
        obj.setSendPassword(sendPassword);
        obj.setTestEmail(loginSet.getTestEmail());
        obj.setFindPwdContent(loginSet.getFindPwdContent());
        obj.setUpdateTime(new Date());
        obj.setOwner(baseUserInfo.getId());
        tSystemLoginSetMapper.updateSelective(obj);
    }

    /**
     * Function Name               queryLoginSet
     *
     * @return
     * @throws VanySoftBaseException
     * @description 获取第一条系统登录信息(数据库中理论上只能有一条信息)
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年9月19日下午9:44:37          X          Initial
     * *********************************************************************
     */
    public TSystemLoginSet queryLoginSet() throws VanySoftBaseException {
        TSystemLoginSet obj = new TSystemLoginSet();
        List<TSystemLoginSet> list = tSystemLoginSetMapper.selectSystemLoginSet();
        if (list.size() > 0) {
            obj = list.get(0);
            obj.setSendPassword(DescUtil.decrypt(obj.getSendPassword()));
        }
        return obj;
    }
}
